// 一个二维费用的01背包问题，需要考虑精灵球的数量以及皮卡丘的体力
// f[i][j][k]表示只考虑前i个精灵，并且消耗的精灵球数不超过j，皮卡丘的体力消耗不超过k所能捕捉到的精灵数量的最大值
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1010, M = 550;
int f[N][M];
int n, m, k;
// f[i][j][k] = max(f[i - 1][j][k], f[i - 1][j - v1][j - v2] + 1)
int main()
{
    cin >> n >> m >> k;
    // 动态规划找到最大能捕捉的精灵数量
    for (int i = 1; i <= k; ++i)
    {
        int v1, v2;
        cin >> v1 >> v2;
        for (int j = n; j >= v1; --j)
            for (int k = m; k >= v2; --k)
                f[j][k] = max(f[j][k], f[j - v1][k - v2] + 1);
    }
    // 皮卡丘的体力不能全部用完
    cout << f[n][m - 1] << ' ';
    // 遍历找所剩下血量最多的方案
    int ans = m - 1;
    while (ans > 0 && f[n][ans - 1] == f[n][m - 1])
        --ans;
    cout << m - ans << endl;
}